package com.zw.a.basic.a12.demo07_reader_and_writer;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;

//案例: 演示字符流的由来.
/*
    结论: 记忆
        1. 中文在GBK码表中占2个字节, 在UTF-8码表中占3个字节.
        2. 不管在什么码表中, 中文的第一个字节肯定是负数.
        3. 字符流 = 字节流 + 编码表.
        4. 数字, 字母, 特殊符号不管在什么码表中都占1个字节, 且都是正数.
 */
public class Demo01 {
    public static void main(String[] args) throws IOException {
        /*
            1.已知项目下的data文件夹下的1.txt文件中包含数据"abc中国".
            2.请通过字节流一次读取一个字节的形式, 将上述文件中的内容读取出来.
            3.将上述读取到的数据打印到控制台上.
            解释:
            1.字节流操作中文不是特别方便.
            2.通过String#getBytes()方法, 可以查看中文在不同码表下占用的字节内容.
         */

        //需求: 请通过字节流一次读取一个字节的形式, 将上述文件中的内容读取出来.
       /* FileInputStream fis = new FileInputStream("day12/data/1.txt");
        int len = 0;
        while((len = fis.read()) != -1) {
            System.out.println((byte)len);
        }
        fis.close();
        */


        //演示不同码表下的中文占用的字节数.
        //utf-8码表:  中国, -28,-72,-83,-27,-101,-67
        String str = "中国";
        byte[] bys = str.getBytes();            //默认码表: UTF-8
        //byte[] bys = str.getBytes("utf-8");   //-28,-72,-83,-27,-101,-67
        //byte[] bys = str.getBytes("gbk");    //-42, -48, -71, -6
        System.out.println(Arrays.toString(bys));
    }
}
